/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.tesoreria.beans;

import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.general.be.Departamento;
import org.cip.esymons.general.be.Distrito;
import org.cip.esymons.general.be.Provincia;
import org.cip.esymons.general.be.TipoZona;
import org.cip.esymons.tesoreria.bc.DepartamentoDelegateTesoreria;
import org.cip.esymons.tesoreria.bc.DistritoDelegateTesoreria;
import org.cip.esymons.tesoreria.bc.ProvinciaDelegateTesoreria;
import org.cip.esymons.tesoreria.bc.TipoZonaDelegateTesoreria;


/**
 *
 * @author oscar
 */
public class DireccionesController {

    private DepartamentoDelegateTesoreria delegadoDepartamento;
    private Departamento departamento;
    private ProvinciaDelegateTesoreria delegadoProvincia;
    private Provincia provincia;
    private DistritoDelegateTesoreria delegadoDistrito;
    private TipoZonaDelegateTesoreria delegadoTipoZona;


     public DireccionesController() {
         delegadoDepartamento=new DepartamentoDelegateTesoreria();
         delegadoProvincia=new ProvinciaDelegateTesoreria();
         delegadoDistrito=new DistritoDelegateTesoreria();
         delegadoTipoZona=new TipoZonaDelegateTesoreria();


    }

     /*codigo para Obtener departamentos*/
    public Departamento buscaDptoPorCodigo(Integer codigo){
        try {
            return delegadoDepartamento.find(codigo);
        } catch (Exception e) {
            return null;
        }
        
    }

     public SelectItem[] getSelectListaItemDpto(){

      try{
        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Departamento> listaDpto = delegadoDepartamento.findAll();
        selects = new SelectItem[listaDpto.size()];
        int cont = 0;
        for(Departamento dptos : listaDpto){

            SelectItem item = new SelectItem(dptos, dptos.getDepNombre());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen departamentos");
            selects[0] = item;
            return selects;
      }
    }
     /*fin de codigo para Obtener departamentos*/


     /*codigo para Obtener provincias*/
     public Provincia buscaProviPorCodigo(Integer codigo){
         try {
            return delegadoProvincia.find(codigo);
         } catch (Exception e) {
            return null;
         }

    }

     public SelectItem[] getSelectListaItemProvincia(){

      try{
        System.out.println("Ingreso 1 provincia");
        SelectItem[] selects = null;        
        PersonaJuridicaController pjcontroller = (PersonaJuridicaController) FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), "personaJuridicaController");
        departamento=new Departamento();
        departamento=pjcontroller.getDepartamento();
        List<Provincia> listaProvincia = delegadoProvincia.listaPorDpto(departamento);
        selects = new SelectItem[listaProvincia.size()];
        int cont = 0;
        for(Provincia prov : listaProvincia){
            SelectItem item = new SelectItem(prov, prov.getProNombre());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen provincias");
            selects[0] = item;
            return selects;
      }

    }
     /*fin de codigo para Obtener provincias*/


     /*codigo para Obtener distritos*/
    public Distrito buscaDistrPorCodigo(Integer codigo){
         try {
              return delegadoDistrito.find(codigo);
         } catch (Exception e) {
             return null;
         }
    }

    public SelectItem[] getSelectListaItemDistrito(){

      try{
        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        PersonaJuridicaController pjcontroller2 = (PersonaJuridicaController) FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), "personaJuridicaController");
        provincia=new Provincia();
        provincia=pjcontroller2.getProvincia();
        List<Distrito> listaDistrito = delegadoDistrito.listaPorProvincia(provincia);
        selects = new SelectItem[listaDistrito.size()];
        int cont = 0;
        for(Distrito dist : listaDistrito){

            SelectItem item = new SelectItem(dist, dist.getDisNombre());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen distritos");
            selects[0] = item;
            return selects;
      }

    }

    /*fin de codigo para Obtener distritos*/


    /*codigo para obtener Tipos de Zonas*/

    public TipoZona buscarTipoZonaPorCodigo(Integer codigo){
        try {
            return delegadoTipoZona.find(codigo);
        } catch (Exception e) {
            return null;
        }
        
    }
    public SelectItem[] getSelectListaItemZona(){

      try{
        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<TipoZona> listaZona = delegadoTipoZona.findAll();
        selects = new SelectItem[listaZona.size()];
        int cont = 0;
        for(TipoZona zonas : listaZona){

            SelectItem item = new SelectItem(zonas, zonas.getZonNombre());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen Zonas");
            selects[0] = item;
            return selects;
      }

    }
 /*fin de codigo para obtener Tipos de Zonas*/


    /**
     * @return the departamento
     */
    public Departamento getDepartamento() {
        return departamento;
    }

    /**
     * @param departamento the departamento to set
     */
    public void setDepartamento(Departamento departamento) {
        this.departamento = departamento;
    }

    /**
     * @return the provincia
     */
    public Provincia getProvincia() {
        return provincia;
    }

    /**
     * @param provincia the provincia to set
     */
    public void setProvincia(Provincia provincia) {
        this.provincia = provincia;
    }
}
